"""Definition of the Adquisicion content type
"""

from zope.interface import implements, directlyProvides

from Products.Archetypes import atapi
from Products.ATContentTypes.content import base
from Products.ATContentTypes.content import schemata
from Products.ATContentTypes.content.base import ATCTContent, ATCTFolder

from guegue.alcaldias import alcaldiasMessageFactory as _
from guegue.alcaldias.interfaces import IAdquisicion
from guegue.alcaldias.config import PROJECTNAME

AdquisicionSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema((

    # -*- Your Archetypes field definitions here ... -*-
    atapi.StringField('title',
                searchable=1,
                isMetadata=0,
                accessor='Title',
                widget=atapi.StringWidget(label='Servicios/Bienes/Obras',
                                      maxlength=150,
                                      size=30,
                                      label_msgid="label_entry_title",
                                      description_msgid="help_entry_title",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('description',
                searchable=1,
                isMetadata=0,
                accessor='Description',
                widget=atapi.TextAreaWidget(label='Breve Descripción',
                                      label_msgid="label_entry_description",
                                      description_msgid="help_entry_description",
                                      i18n_domain="guegue.alcaldias",
                                      description='Entre una breve descripción de la adquisicion o contratacion.')),
    atapi.StringField('monto',
              searchable=0,
              required=0,
              widget=atapi.StringWidget(label='Costo estimado de la Adquisición',
                                      label_msgid="label_entry_monto",
                                      description_msgid="help_entry_monto",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    #atapi.StringField('gasto',
    #            searchable=1,
    #            isMetadata=0,
    #            widget=atapi.StringWidget(label='Tipo de Gasto',
    #                                  maxlength=300,
    #                                  size=30,
    #                                  label_msgid="label_entry_gasto",
    #                                  description_msgid="help_entry_gasto",
    #                                  i18n_domain="guegue.alcaldias",
    #                                  description='')),
    atapi.StringField('modalidad',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Modalidad de Adquisición',
                                      maxlength=300,
                                      size=30,
                                      label_msgid="label_entry_modalidad",
                                      description_msgid="help_entry_modalidad",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('fuente',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Fuentes de financiamiento y porcentajes',
                                      maxlength=300,
                                      size=60,
                                      label_msgid="label_entry_fuente",
                                      description_msgid="help_entry_fuente",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.DateTimeField('fecha',
                searchable=0,
                required=0,
                widget=atapi.CalendarWidget(label='Fecha estimada para Adquisición',
                                      label_msgid="label_entry_fecha",
                                      show_hm = False,
                                      description_msgid="help_entry_fecha",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
   atapi.StringField('estado',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Estado',
                                      maxlength=150,
                                      size=30,
                                      label_msgid="label_entry_estado",
                                      description_msgid="help_entry_estado",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.TextField('body',
              searchable=1,
              required=0,
              primary=1,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Comentarios adicionales',
                                label_msgid="label_entry_body",
                                description_msgid="help_entry_body",
                                i18n_domain="guegue.alcaldias",
                                description="Descripcion completa de la adquisicion/contratacion")),
    atapi.FileField('adjunto',
              searchable=0,
              required=0,
              widget=atapi.FileWidget(label='Archivo adjunto',
                                label_msgid="label_entry_adjunto",
                                description_msgid="help_entry_adjunto",
                                i18n_domain="guegue.alcaldias",
                                description='Puede adjuntar un archivo relacionado.')),
))

# Set storage on fields copied from ATContentTypeSchema, making sure
# they work well with the python bridge properties.

#AdquisicionSchema['title'].storage = atapi.AnnotationStorage()
#AdquisicionSchema['description'].storage = atapi.AnnotationStorage()

schemata.finalizeATCTSchema(AdquisicionSchema, moveDiscussion=False)

class Adquisicion(base.ATCTContent):
    """Tipo de datos para adquisiciones"""
    implements(IAdquisicion)

    portal_type = "Adquisicion"
    schema = AdquisicionSchema

    #title = atapi.ATFieldProperty('title')
    #description = atapi.ATFieldProperty('description')

atapi.registerType(Adquisicion, PROJECTNAME)
